package Modelo;
import java.awt.Image;
import java.awt.Toolkit;
import org.w3c.dom.Document;
import org.w3c.dom.Element;


public class Roca extends Bloque {

	private Integer prioridad;
	private Image imagenRoca;


	public Roca(Posicion posicion, Planeta planeta){
		super(posicion,planeta);
		this.prioridad = 1;
		imagenRoca = Toolkit.getDefaultToolkit().getImage("imagenes/roca.png");

	}
	
	public Roca (Element xmlElement){
		super(xmlElement);
	}
	
	public Integer getPrioridad (){
		return prioridad;
	}
	

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "r";
	}

	@Override
	public void actuar(Pooglin pooglin) {
		// TODO Auto-generated method stub
		// Si el pooglin se encuentra sobre el bloque
		if (abajoPooglin(pooglin) && pooglin.getBloquesCaidos()<Constantes.CAIDA_MAX){
				pooglin.reiniciarBloquesCaidos();
				pooglin.setVelocidadNormal();
			}
		if (abajoPooglin(pooglin) && pooglin.getBloquesCaidos()>=Constantes.CAIDA_MAX){
			pooglin.morir();
		}
		// Si el pooglin va en sentido hacia derecha
		if ((pooglin.haciaDerecha())&&
				(adelantePooglinDerecha(pooglin))){
					pooglin.cambiarDireccion();
		}
		// Si el pooglin va en sentido contrario
		else{
			if (adelantePooglinIzquierda(pooglin))
					pooglin.cambiarDireccion();
		}
	}

	@Override
	public void romper(Pooglin pooglin) {
		// TODO Auto-generated method stub
		this.actuar(pooglin);
	}

	@Override
	public void excavarUnBloque(Pooglin pooglin) {
		// TODO Auto-generated method stub
		this.actuar(pooglin);
	}

	@Override
	public void transportarPooglin(Pooglin pooglin) {
		// TODO Auto-generated method stub
		// Si el pooglin va en sentido hacia derecha
		if ((pooglin.haciaDerecha())&&
				(adelantePooglinDerecha(pooglin))){
			pooglin.setHabilidad(null);
		}
		// Si el pooglin va en sentido contrario
		else{
			if (adelantePooglinIzquierda(pooglin))
				pooglin.setHabilidad(null);
		}
		if (abajoPooglin(pooglin)){
			((Teletransportacion)pooglin.getHabilidad()).transportarUnPaso();
			pooglin.caminar();
		}

	}

	@Override
	public void construirTunel(Pooglin pooglin) {
		// TODO Auto-generated method stub
		
	}

	public Image getImagen() {
		return this.imagenRoca;
	}
	
	public Element toXml(Document doc) {
		// TODO Auto-generated method stub
		Element xmlElement = doc.createElement("Bloque");
		xmlElement.setAttribute("Tipo", "Roca");
		xmlElement.setAttribute("prioridad", ""+this.prioridad);
		xmlElement.appendChild(this.getPosicion().toXml(doc));
		
		return xmlElement;
	}

}
